//  promise 异步编程的一种解决方案

// 定义一个异步函数
function asyncFunc(num) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (num > 0) {
        resolve(num * 2);
      } else {
        reject(new Error("num must be a positive number"));
      }
    }, 1000);
  });
}
// 调用异步函数
asyncFunc(2)
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

// 输出结果：
// 4
// Promise.all([promise1, promise2])
// 并行执行多个 Promise，全部成功时返回结果数组，任一失败则立即失败
// Promise.all([asyncFunc(2), asyncFunc(-1)])
//   .then(res => {
//      console.log(res);
//    })
//   .catch(err => {
//      console.log(err);
//    });

// promise 链式调用
asyncFunc(2)
  .then((res) => {
    console.log(res);
    return asyncFunc(res); // 必须返回一个 promise 对象,下一个 then 才会执行
  })
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });

// promise 与 async/await 结合使用
async function asyncFunc() {
  try {
    const res1 = await asyncFunc1();
    const res2 = await asyncFunc2(res1);
    console.log(res2);
  } catch (err) {
    console.log(err);
  }
}
